package com.UnionPayCenter.account.entity;

import com.UnionPayCenter.account.enums.PayChannelEnum;
import com.UnionPayCenter.account.enums.PayStatusEnum;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
public class PayBill {

    /**
     * 流水号
     */
    private String sn;

    /**
     * 用户Id
     */
    private Integer userId;

    /**
     * 店铺Id
     */
    private Integer shopId;

    /**
     * 子账户类型
     */
    private String subAccountType;

    /**
     * 支付账户Id
     */
    private Long payAccountId;

    /**
     * 交易类型:交易类型:
     * 8310帐户验证(打款验证，报文验证),卡通协议签订,
     * 8301充值(网银充值、卡通充值),
     * 1301即时到帐支付(网银支付、卡通支付、平台帐户支付),
     * 1302担保交易支付(网银支付、卡通支付、平台帐户支付),
     * 1303担保交易支付确认(收款人确认、付款人确认),
     * 8022担保交易退款申请,
     * 8023担保交易退款确认,
     * 1001实时代扣,
     * 2001批量代扣,
     * 1002实时代付,
     * 2003批量代付,
     * 8304实时提现,
     * 8303普通提现,
     * 8021直接退款
     */
    private String transactionType;

    /**
     * 是否渠道金额支付: y/n 直接支付为渠道支付，用充值金额支付为非渠道支付
     */
    private String channelPayFlag;

    /**
     * 支付渠道
     */
    private PayChannelEnum payChannel;

    /**
     * 发送总金额
     */
    private Integer totalAmount;

    /**
     * 实际金额
     */
    private Integer amount;

    /**
     * 参与活动的金额
     */
    private Integer activityAmount;

    /**
     * 优惠券Id
     */
    private String discountId;

    /**
     * 优惠券描述
     */
    private String discountDescription;

    /**
     * 订单Id
     */
    private String orderId;

    /**
     * 订单说明, 转帐交易无
     */
    private String orderNote;

    /**
     * 收款方是否是平台客户: 是--1/否--0
     */
    private Integer payeeIfkftCust;

    /**
     * 收款方账户类型: 0--平台内虚户,1--平台内实户,2--平台外实户
     */
    private String payeeAccountType;

    /**
     * 收款方客户号, 商家id
     */
    private String payeeMerchantId;

    /**
     * 收款子账户id, 备用字段
     */
    private String saccId;

    /**
     * 交易状态: 10--未支付(订单保存未支付),
     * 00--对外待支付(已调用渠道接口),
     * 02--对外支付中(已调用渠道),
     * 03--支付成功,
     * 04--支付失败
     */
    private PayStatusEnum state;

    /**
     * 会计日期, 登记帐户变动的日期
     */
    private String workDate;

    /**
     * 对账状态: 00未对账,01 对帐中,02已对账成功,03 对帐失败,均填写未对账
     */
    private String checkState;

    /**
     * 结算日期, 外部系统提供，供外部系统对账用
     */
    private String settleDate;

    /**
     * 账套Id
     */
    private String setId;

    private String remark;

    /**
     * 消费后的余额
     */
    private Integer balance;

    /**
     * 消费前的余额
     */
    private Integer originalBalance;


    private Date createTime;

    private Date updateTime;
}